Modern day computer systems have many levels of complexity over computer systems of the past. Traditionally, a computer system included a hardware layer and a system configuration for interfacing with the hardware layer. A system configuration includes an operating system with a kernel layer on top of the hardware layer and interface application programs that facilitate operations of the operating system. Furthermore, the system configuration defines individualized user settings that customize each of these software components per user specifications. For example, the system configuration includes firewall settings for a firewall application of the operating system and display presentation settings for the graphical interface of the operating system.
However, advancements in the field of virtualization have begun to blur the distinction between hardware and software. Through virtualization, a virtualization engine (also referred to as a “hypervisor”) emulates the hardware layer as distributable sets of “virtual” hardware. The hypervisor can then allocate each set of virtual hardware to different system configurations, thus allowing multiple distinct system configurations to reside on a single computer system.
As shown in FIG. 1, virtualization allows a single computing device 110 the ability to function as two or more different computing devices, with each device having a distinct set of virtual hardware and a distinct system configuration. For instance, system configuration 120 may be allocated 40% of the memory and 80% of the processor cycles of the device 110 and system configuration 130 may be allocated the remaining 60% of the memory and 20% of the processor cycles of the device 110. Additionally, the system configuration 120 may operate using a first operating system with a first set of configuration parameters and the system configuration 130 may operate using a second operating system with a second set of configuration parameters.
An added benefit of virtualization is that a failure in one set of virtual hardware or system configuration does not disrupt the operation of the other set of virtual hardware or system configurations, even though the virtual hardware and the system configurations operate over physical resources of a single device. With reference to FIG. 1, should any piece of the system configuration 120 crash due to an improper setting, the system configuration 130 will continue operating unhindered as the resources used by each system configuration 120 or system configuration 130 operate independent of one another.
At the core of each virtualization solution is the hypervisor. The hypervisor manages a logical partitioning of a physical set of hardware resources of a physical device, or “platform,” between different virtualized “guests” (e.g., configurations). Each virtualized guest implements one or more virtual machines over a logical partition. The hypervisor partitions underlying hardware resources such that each virtual machine is provided what logically appears as a distinct and unshared set of hardware resources. However, the hypervisor maps the virtual machine hardware calls to a corresponding subset of physical hardware resources that are actually shared by all virtual machines operating on a particular hardware platform.
The hypervisor is thus responsible for mapping the hardware resources of a platform to a set of virtual resources that can then be distributed independently to one or more system configurations that together form the one or more virtual machines. In this manner, each virtual machine effectively is provided its own resources (e.g., a processor, memory, block device/disk storage, networking, etc.), and the operating system of each virtual machine operates with little to no change over the provided set of resources.
Different vendors implement hypervisors differently (e.g., Xen®, Parallels®, VMware®, Kernel Virtual Machine® (“KVM”), etc.). Specifically, two prominent hypervisor types are defined as “type 1” hypervisors and “type 2” hypervisors, which are further described with reference to FIG. 2.
FIG. 2 illustrates several different platforms (both virtual and physical) on which a system configuration can operate. FIG. 2 shows a computer system 200 having a system configuration 205 and a platform 210. The system configuration 205 includes a kernel layer 235 and operating system and application layers 240. The system configuration 205 may include a set of device drivers that allow hardware devices of the platform 210 to communicate with the kernel 235, the operating system, and/or the applications of the system configuration 205.
FIG. 2 also illustrates three different types of platforms 210 in three exploded views 250a-c. The first exploded view 250a illustrates a platform 210a of a “traditional” computer system (i.e., a computer system with no hypervisors). This platform 210a includes only the physical hardware 215 of the computer system. Thus, the configuration 205 directly interfaces with the physical hardware 215 of the computer system 200.
The second exploded view 250b illustrates a platform 210b of a computer system in which a type 1 hypervisor 255 is present. The type 1 hypervisor 255 interfaces with the physical hardware of the computer, and provides a set of virtual hardware to the system configuration 205. Thus, the system configuration 205 interfaces with the virtual hardware provided by the type 1 hypervisor 255, which itself directly accesses the physical hardware 215 of the computer system 200.
The third exploded view 250c illustrates a platform 210c of a computer system in which a type 2 hypervisor 230 is present. The platform 210 includes a “host” kernel layer 220 on top of the physical hardware 215 and a “host” operating system 225 on top of the host kernel layer 220. This platform 210 also includes an application layer (not shown) on top of the operating system layer. Additionally, the platform 210 includes a type 2 hypervisor 230, which interfaces with the host operating system 225. This type 2 hypervisor 230 may be one of the applications in the application layer (not shown) on top of the host operating system 225. The type 2 hypervisor 230 is allocated a set of the physical resources 215 by the host operating system 225. Accordingly, the system configuration 205 interfaces with virtual hardware provided by the type 2 hypervisor 230, which itself receives a set of hardware resources from the host operating system 225.
The computer system shown in the exploded view 250c may be considered a “traditional” computer system (e.g., a traditional computer system as shown in the exploded view 250a) with the type 2 hypervisor 230 as one of the applications in the application layer. In other words, the computer system of this exploded view 250c may be considered a traditional computer system with system configurations “stacked” on one another.
Hosting services allow users to implement their system configurations (e.g., system configuration 205) on remote computer systems without the pitfalls associated with owning and maintaining the hardware platforms on which the system configurations run. These pitfalls include overhead costs associated with purchasing, upgrading, and/or maintaining equipment and software needed to implement the system configuration. Instead of a user burdening him or herself with these headaches, a hosting service provider maintains and provisions a grid of hardware nodes that are shared amongst multiple users. More specifically, resources of a single node can be partitioned and each of these partitions can be allocated to a virtual server configuration of a different user.
In order to host a system configuration, some hosting systems allow a user to set up the system configuration “from scratch.” In other words, the user selects one operating system from multiple different operating systems. The user can then custom configure the operating system by changing configuration parameters or by installing other interface applications to run in conjunction with the operating system. This methodology is problematic, however, when the user already has set up his or her system configuration on another computer (e.g., his or her own home computer, or another hosting service) and wants to host it at the hosting system.
Therefore, there is a need in the art for a method of adapting a system configuration of a computer system in order to host the system configuration in a server hosting environment. There is further a need to adapt a system configuration that is hosted in one server hosting environment in order to host the system configuration in a different server hosting environment.